package com.dong.aoptools.util;

import com.dong.aoptools.constant.PropertiesConst;

import java.io.*;
import java.net.URL;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarInputStream;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;

/**
 * @description: 配置文件工具类
 * @author: 陈瑞东
 * @create: 2021-11-16 16:56
 */
public class PropertiesUtils {

    /**
     * 读取配置文件
     * @param fileName 文件名
     * @param key 键
     * @param defaultValue 默认值
     * @return 配置文件对应键的值
     */
    public static String getProperty(String fileName, String key, String defaultValue) {
        try {
            // 获取项目目录
            File dir = new File(PathUtils.getRootPath());
            // 获取配置文件
            File file = new File(dir, PropertiesConst.CONFIG_DIR + "/" + fileName);
            Properties p = new Properties();
            p.load(new FileInputStream(file));
            String property = p.getProperty(key, defaultValue);
            return property;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return defaultValue;
    }

    /**
     * 写入配置文件
     * @param fileName 文件名
     * @param key 键
     * @param value 值
     */
    public static void setProperty(String fileName, String key, String value) {
        try {
            // 获取项目目录
            File dir = new File(PathUtils.getRootPath());
            // 获取配置文件
            File file = new File(dir, PropertiesConst.CONFIG_DIR + "/" + fileName);

            Properties p = new Properties();
            p.load(new FileInputStream(file));
            p.setProperty(key, value);
            p.store(new FileOutputStream(file), null);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 读取 config.properties 配置文件
     * @param key 键
     * @param defaultValue 默认值
     * @return 配置文件对应键的值
     */
    public static String getConfigProperty(String key, String defaultValue) {
        return getProperty(PropertiesConst.CONFIG_PROPERTIES, key, defaultValue);
    }

    /**
     * 写入 config.properties 配置文件
     * @param key 键
     * @param value 值
     */
    public static void setConfigProperty(String key, String value) {
        setProperty(PropertiesConst.CONFIG_PROPERTIES, key, value);
    }

}
